<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<h3>常用正则表达式形式</h3>
		<ul>
			<li>邮编格式判断</li>
			<li>简单电子邮件地址格式判断</li>
			<li>必须以某字符(串)开头或结尾</li>
			<li>注意如果某些字符在上下文中有特殊含义，则需要使用转义字符</li>
			<button onclick="funcTest1()">运行例子</button>
		</ul>
		<script>
			function funcTest1(){
				var reg = /^\d{6}$/;
				console.log(reg.test("102200"));
				console.log(reg.test("102200a"));	// 尝试去掉reg最后的$，再次查看结果
				
				var reg = /^\d{3,4}-\d{7,8}$/;
				console.log(reg.test("010-12345678"));
				console.log(reg.test("010-1234567"));
				console.log(reg.test("0451-12345678"));
				console.log(reg.test("01234-12345678"));
				
				var reg = /^([0-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/;
				// 或者：(请注意，因为\本身也是特殊字符，下列表达式需要把\变成\\)
				//var reg = new RegExp("^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$");
				console.log(reg.test("zhouhai@chinasofti.com"));
				console.log(reg.test("zhouhai@chinasofti"));
				console.log(reg.test("zhouhai@chinasofti.com.cn"));
			}
		</script>
	
		<h3>使用正则表达式解析字符串</h3>
		<ul>
			<li>exec函数</li>
			<li>g开关</li>
			<button onclick="funcTest2()">运行例子</button>
		</ul>
		<script>
			function funcTest2(){
				var text = "Name:{{name}}, Age:{{age}}, Gender:{{gender}}";
				var reg = /{{\w+}}/g;		// 加上g，允许在碰到第一个匹配后，继续对后续字符串匹配
				var match = reg.exec(text);
				while(match){					// 如果没有/g，则会陷入死循环
					console.log(match[0] + ":" + match.index);
					match = reg.exec(text);
				}
			}
		</script>
		
		<h3>文本语法与创建RegExp的不同</h3>
		<ul>
			<li>使用/.../语法创建的正则表达式对象，在有"g"参数情况下，在执行test时，会从上次执行到的索引处继续执行</li>
			<li>使用RegExp构造函数创建的对象，每次都会从0位置执行</li>
			<button onclick="funcTest3()">运行例子</button>
		</ul>
		<script>
			function funcTest3(){
				var reg1 = /.at/g;
				var reg2 = new RegExp(".at","g");
				
				console.log(reg1.test("batbat"));
				console.log(reg1.test("batbat"));
				console.log(reg1.test("batbat"));
				
				console.log(reg2.test("batbat"));
				console.log(reg2.test("batbat"));
				console.log(reg2.test("batbat"));
				
				console.log(reg1.exec("bat"));
				console.log(reg1.exec("bat"));
				console.log(reg1.exec("bat"));
				
			}
		</script>
	</body>
</html>
